package com.softeem.idriveserver.utils;

import com.softeem.idriveserver.entity.User;

import java.lang.reflect.Field;

/**
 * 反射工具类
 */
public class ObjectUtils {

    /**
     * 检查对象除了ID之外其他字段是否为空
     * @param object
     * @return
     */
    public static boolean checkObjectIsNullExpId(Object object){
        //获取指定对象的Class对象
        Class<?> clz = object.getClass();
        //获取对象中的所有字段集
        Field[] fields = clz.getDeclaredFields();
        //循环遍历每一个字段
        for (Field field : fields) {
            //排除id字段和对象序列化字段
            if(!field.getName().equals("id") && !field.getName().equals("serialVersionUID")){
                try {
                    //设置字段可访问（暴力反射: 忽略字段的访问修饰符无论private,protected等忽略不计）
                    field.setAccessible(true);
                    //获取字段值
                    Object returnVal = field.get(object);
                    if(returnVal != null){
                        return false;
                    }
                } catch (IllegalAccessException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        return true;
    }

}
